package com.tingyuge.base.arithmetic.sort;

/**
 * Created by xiaodao
 * date: 2020/4/5
 * 选择排序
 */
public class SelectionSort<T extends Comparable<T>>  extends Sort {


 /*   @Override
    protected void sort() {
        for (int j = array.length - 1; j > 0; j--) {
            //默认第一个是最大的
            int maxIndex = 0;
            for (int i = 1; i <= j; i++) {
                //如果有元素比你大, =与稳定的算法.
                //i > maxIndex 那么就i 移到最后经过里面一层循环找到最大的值
                if (array[maxIndex] <= array[i]) {
                    maxIndex = i;
                }


            }
            //最大的值
            T temp = array[maxIndex];
            //交换位置 .最后一位和找出 的最大值
            array[maxIndex] = array[j];
            //最大的值赋给 循环的最后一位
            array[j] = temp;

        }
    }*/

    @Override
    protected void sort() {
        for (int end = array.length - 1; end > 0; end--) {
            int max = 0;
            for (int begin = 1; begin <= end; begin++) {
                if (cmp(max, begin) < 0) {
                    max = begin;
                }
            }
            swap(max, end);
        }

    }
}
